/*
 * ModFamGeneral.h
 *
 * Created: 20/03/2012 15:41:44
 *  Author: marionse
 *
 * \brief objet de type famille, n'a pas de descripteur module
 *        et doit etre utiliser uniquement par le module Fam
 *        il s'agit d'une sous-ensemble du module Fam
 *
 *        Ici prise en charge de la famille GENERAL
 */ 

#ifndef FAMGENERAL_H_
#define FAMGENERAL_H_

#include "custom_type.h"
#include "ModRF.h"

/**
* \brief definit les commandes et les arguments de la famille
*/

/** commande de heart beat envoyer par un produit a interval regulier avec le niveau d'alimentation en parametre */
#define FAM_GEN_CMD_HB_ID 0
	#define FAM_GEN_CMD_HB_ARG_BATT_LEVEL_IDX 0 // niveau d'alimentation du recepteur, index dans la payload
	#define FAM_GEN_CMD_HB_ARG_BATT_LEVEL_SIZE 1 // taille en octet dans le payload
	#define FAM_GEN_CMD_HB_PAYLOAD_SIZE 1 // taille en octet du payload

/** commande pour modifier la periodicite d'envoye de la commande heart-beat, 0 pour desactiver la fonctionnalite */
#define FAM_GEN_CMD_SET_HB_PERIOD_ID 1
	#define FAM_GEN_CMD_HB_PERIOD_ARG_VALUE_IDX 0 // periode d'envoye en ms
	#define FAM_GEN_CMD_HB_PERIOD_ARG_VALUE_SIZE 2 // taille de l'argument periode
	#define FAM_GEN_CMD_HB_PERIOD_PAYLOAD_SIZE 2 // taille en octet du payload

/** commande pour demander la version du produit */
#define FAM_GEN_CMD_GET_VERSION_ID 2
	#define FAM_GEN_CMD_GET_VERSION_PAYLOAD_SIZE 0 // taille en octet du payload

/** Reponse a la commande get version */
#define FAM_GEN_CMD_GET_VERSION_RSP_ID 3
	#define FAM_GEN_CMD_GET_VERSION_RSP_ARG_VERSION_IDX 0 // version du produit utilisation de __TIMESTAMP__
	#define FAM_GEN_CMD_GET_VERSION_RSP_ARG_VERSION_SIZE 24 // taille de l'argument
	#define FAM_GEN_CMD_GET_VERSION_RSP_PAYLOAD_SIZE 24 // taille en octet du payload


/**
* \brief fonction d'initialisation
*/
ERetCode FamGeneralInit( void );

/**
* \brief tick de la boucle principale
*/
ERetCode FamGeneralTick( void );

/**
* \brief fonction de traitement des messages radio entrant
*/
ERetCode FamGeneralInMsg( TRFMsg *ip_in_msg );


/**
* \brief Callback activable par l'applicatif pour cette famille
*/

/**
* \brief APP_HAVE_GEN_HB_CALLBACK : permet de recevoir les heart beat des differents produits
*/
void FamGeneralHBCallback( TRFMsg *ip_msg );



#endif /* FAMGENERAL_H_ */